oracle数据库中如何处理clob字段方法介绍
if (rs.next()) {
flag=true;
CLOB clob = (CLOB) rs.getClob(col);
try{
Reader reader = clob.getCharacterStream();
conn.commit();
// " listtype ='sh11' for update";
这个插入和更新操作要放在事务中,即获取到Connection后要设置setAutoCommit(false);
// String col="jsonbody";
Writer os = lob.getCharacterOutputStream();
for(int len = reader.read(cb);len>0;len= reader.read(cb)){
os.flush();
conn.setAutoCommit(false);
1、在SQL中调用方法转成VARCHAR2字段后,再DISTINCT,这种方式的局限显而易见。
复制代码 代码如下:
更新:复制代码 代码如下:
} catch (SQLException e) {} catch (IOException e) {
conn.close();
复制代码 代码如下:
而CLOB数据类型,则能最多存放8G的数据。但是这个字段处理起来有比较多的特殊性,记录一下。Connection conn=null;
rs = stem.executeQuery(sql);
}
}
}
ResultSet rs=null;
if(rs.next()){
sb.append(cb,0,len);
2、改变SQL脚本的书写方式,先查出没有CLOB字段的集合,然后在在外层用EXISTS关键字或IN关键字进行筛选。
}
//String sqlsel2 = "select jsonbody from db_ps_listcatalog where" +
throw new SQLException("读取文章内容失败.",e);
之类的东西,很麻烦。网上流行通用做法是先插入一个空CLOB字段,用empty_clob()方法来创建空字段,如:
Writer wr = null;
}
}
读取:
} catch (IOException e) {
然后再用SELECT TOPIC_CONTENT FROM T_TOPIC WHERE TOPIC_ID='0000001'FOR UPDATE的查询语句,
public boolean updateClob(String sql,String col,String buf){
try {
try {
return flag;
conn= dp.getConnection();
来构造一个更新的STATEMENT,在获取到ResultSet之后,对CLOB字段进行更新。
os.write(dr.getField("FLD_CONTENT").asString());
e.printStackTrace();
BufferedWriter bw = new BufferedWriter(wr);
Statement stem=null;
INSERT INTO T_TOPIC(TOPIC_ID,TOPIC_CONTENT) VALUES(‘0000001',empty_clob());
不能进行去重复操作。
在知识库的建立的时候,用普通VARCHAR2存放文章是显然不够的,只有区区4000的字节,放不了多少字,
StringBuffer sb=new StringBuffer();
CLOB clob = (CLOB)rs.getClob("FLD_CONTENT");
复制代码 代码如下:
两种解决办法:} catch (Exception ex){
插入:
char[] cb = new char[1024];
直接写在SQL里面是不行的,一来SQL脚本有字符数限制,而来文章内容包含许多特殊字符,如换行,引号,
conn.rollback();
java.lang.reflect.Method methodToInvoke = clob.getClass().getMethod(
}
oracle.sql.CLOB lob =(CLOB)rs.getClob(1);
有CLOB字段的数据表,在SQL语句中不能使用DISTINCT关键字进行筛选,即便关键字不用在CLOB字段名前,
ResultSet rs = pstm.executeQuery();
boolean flag=false;
bw.write(buf);
也要设置事务
bw.flush();
更新的时候也是采用SEELCT … FOR UPDATE方式
bw.close();
stem=conn.createStatement();
try {
实际上DISTINCT关键字都是对于SQL中所有字段有效。而CLOB字段是不能进行如同LIKE类似的匹配的,所以,
}
查询的特殊性:
wr = (Writer) methodToInvoke.invoke(clob, (Object[]) null);
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/sql/oracle/3329.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
是因为scan的IP问题补占用
时间:2021-01-20
-
还你一个干净的model 2、功
时间:2021-01-20
-
既然 ROWNUM 列并不是真实存
时间:2021-01-20
-
Real Application Clusters
时间:2021-01-20
-
在tools-preferences-connection(
时间:2021-01-20
-
Windows Sever 2012下Oracle 12c安
时间:2021-01-10
-
Oracle安装监听器错误的解
时间:2021-01-07
-
oracle远程连接服务器数据
时间:2021-01-07
热门文章
-
Oracle存储过程编程详解
时间:2020-12-07
-
Azure Queue Storage 基本用法 Azure Storage 之
时间:2020-12-26
-
win10下oracle 11g安装图文教程
时间:2020-12-25
-
oracle 数据库学习 基本结构介绍
时间:2020-12-13
-
Azure File Storage 基本用法 Azure Storage 之 F
时间:2020-12-26
-
windows使用sqlpus连接oracle 数据库的教程图
时间:2020-12-25
-
Window下Oracle Database 11g 发行版2安装教程
时间:2020-12-29
-
Oracle解锁的方式介绍
时间:2020-12-14
-
Oracle 12c Study之Installer Oracle
时间:2021-01-06
-
linux下oracle设置开机自启动实现方法
时间:2020-12-13
